1、 内核线程简介
	内核经常需要在后台执行一些操作，这些操作由内核线程完成。内核线程是独立运行在内核空间的标准进程，它和普通
的进程之间的最大区别是它没有独立的地址空间，它只在内核空间运行，与内核使用同一张页表。
2、 创建内核线程
	1） 用 kthread_create 创建内核线程，然后用 wake_up_process 启动内核线程
	2） 用 kthread_run 直接创建并启动内核线程
3、 停止内核线程
	线程一旦启动起来后，会一直运行，除非该线程主动结束，在期望线程停止时可以通过 kthread_stop 在线程flags中设
置 KTHREAD_SHOULD_STOP 标志，然后唤醒线程，并等待线程结束。线程被唤醒后应通过 kthread_should_stop 检测是否设
置了 KTHREAD_SHOULD_STOP 标志，如果设置了就应该退出线程函数
4、 内核线程使用范例
	static struct task_struct *kthread;
	
	static int thread_func(void *arg)
	{
		while(!kthread_should_stop())
		{
			//处理各种事务
	
			//休眠
			set_current_state(TASK_INTERRUPTIBLE);
			schedule_timeout(HZ);
			set_current_state(TASK_RUNNING);
		}
	
		return 0;
	}
	
	//需要启动线程时做如下操作
	kthread = kthread_create(thread_func, NULL, "thread_test");
	wake_up_process(kthread);
	
	//需要停止线程时做如下操作
	kthread_stop(kthread);
